#include "templateClass.hpp"
#include "DoubleLinkList.hpp"
#include "LinkQueue.hpp"
#include "BinaryTree.hpp"
#include <iostream>

template <typename T1, typename t2>
class Pair // 对组
{
public:
    T1 a;
    T2 b;
};

// class Derived : public Pair<int, std::string> // 全特化
// {
// };

// template <typename T>
// class Derived : public Pair<int, T> // 偏特化
// {
// };

// 全>偏>模版

int main()
{
    // 类模板必须显示声明
    // DynamicArray<int> a;
    // a.InsertTail(1);
    // a.InsertTail(2);
    // a.InsertTail(3);

    // DynamicArray<DynamicArray<int>> da;
    // da.InsertTail(a);
    // da.InsertTail(a);
    // std::cout<<da<<std::endl;

    // DoubleLinkList<int> list;
    // for (int i = 0; i < 10; i++)
    // {
    //     list.InsertTail(i + 1);
    // }
    // std::cout<<list;
    // list.RemoveByIndex(9);
    // std::cout << list.FindByIndex(5)<<std::endl;
    // std::cout<<list;

    // LinkQueue<int> l;
    // for (int i = 0; i < 10; i++)
    // {
    //     l.Push(i + 1);
    // }

    // while (!l.IsEmpty())
    // {
    //     std::cout << l.GetFront() << " ";
    //     l.Pop();
    // }
    // std::cout << std::endl;

    // Base<int, std::string> Student = {1, "zhangsan"}; // 用法


    return 0;
}
